﻿// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Kismet/KismetSystemLibrary.h"
#include "UObject/Object.h"
#include "C14DefineType.generated.h"

/**
 * 
 */
UCLASS()
class UE5TRICKSPROJECT_API UC14DefineType : public UObject
{
	GENERATED_BODY()

public:
	
	UPROPERTY(BlueprintReadWrite)
	float TestFloatValue = 3.f;
};

template<class T>
constexpr T LambdaTest = [](){};

// 匿名函数变量式声明
auto G_PrintLambda = [](auto* Context, auto& Content)
     { UKismetSystemLibrary::PrintString(Context, Content);};

template<typename  T>
auto GetAutoTypeValue(T t){ return t;}

USTRUCT(BlueprintType)
struct FAliasStruct
{
	GENERATED_BODY()

	UPROPERTY(BlueprintReadWrite)
	float AliasFloatValue = 0.3f;

	UPROPERTY(BlueprintReadWrite)
	FName AliasName = "AliasName";
};

template<typename T, typename U>
struct TestStruct
{
	T t;
	U u;
};

template<typename T>
using AliasTestStruct = TestStruct<T, FAliasStruct>;

constexpr int32 GetMaxValue(const int32 Left, const int32 Right)
{
	return Left < Right ? Left : Right;
}

namespace RootTestNS::SubFirstTestNS::LastNameSpace
{
	[[maybe_unused]] const static float TestNSValue = 0.01;
}
